day03 负数二进制求法

2024-05-05 08:58
文章标签 二进制 day03 负数 求法

本文主要是介绍day03 负数二进制求法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符类型名称是char
字符类型里包含256个不同的整数,每个
   整数可以用来代表一个字符(例如'a',
   '^'等)
这些整数和字符可以互相替代
ASCII码表中列出所有整数和字符的对应关系
'a'          97
'A'          65
'0'          48

ASCII码表里所有小写英文字母是连续排列的,
   并且'a'对应的整数最小,字母'z'对应的
   整数最大
ASCII码表里所有大写英文字母和阿拉伯数字
   字母也都符合这个规律

'd' - 'a'   等于   'D' - 'A'
'd' - 'a' 等于  '3' - '0'   等于  3 - 0

字符类型里的所有字符被分成两组,每组包含
    128个
其中一组字符和整数之间的对应关系在所有
    计算机上都一样,它们对应的整数范围从
    0开始到127为止
另外一组字符和整数之间的对应关系在不同
    计算机上可能不同,它们对应的整数
    有可能从-128到-1,也可能从128到255

'\n'       换行字符
'\r'       回车字符
'\''       代表字符'
'\"'       代表字符"
'\\'       代表字符\

短整数类型名称是short
这个类型里包含65536个不同的整数,其中一半
    是非负数,另外一半是负数。这些数字以
    数字0为中心向两边扩展

长整数类型名称是long
这个类型里包含2的32次方个不同的整数,其中
    一半是非负数,另外一半是负数。这些数字
    以数字0为中心向两边扩展的。

整数类型名称是int
在我们的计算机上整数类型和长整数类型完全
   一样

以上类型统一叫做有符号类型
每个有符号类型有一个对应的无符号类型,
    无符号类型的名称是在对应有符号类型
    名称前加unsigned(例如unsigned char,
    unsigned int等)
无符号类型和它对应的有符号类型所包含的
    整数个数一样,但是不包含负数

整数相关类型所包含的数字范围互相重叠
    并且逐渐扩大

程序中不带小数点的数字后加u表示数字的
    类型是无符号整数类型

C语言程序中使用浮点类型表示带小数点的
    数字
浮点类型分为单精度浮点类型和双精度
    浮点类型
双精度浮点类型可以记录更多小数点后面的
    数位
单精度浮点类型的名称是float
双精度浮点类型的名称是double

程序中带小数点的数字默认是双精度浮点类型的
如果带小数点的数字后加f就表示这个数字的
   类型是单精度浮点类型

C语言里允许程序员扩展新的数据类型
这些新的数据类型叫复合数据类型
复合数据类型需要先创建然后才能使用

C99规范里引入布尔类型
这个类型里只包含0和1两个整数,0叫做
    假,1叫做真
真和假都叫做布尔值

任何一个整数都可以当作布尔值使用,0当作
    布尔值使用的时候是假,其他整数当作
    布尔值使用的时候都是真

数据类型和占位符的对应关系
char和unsigned char          %c
short                        %hd
unsigned short               %hu
long                         %ld
unsigned long                %lu
int                          %d
unsigned int                 %u
float                        %f或%g
double                       %lf或%lg
                %f和%lf会保留小数点后面
                 多余的0,%g和%lg不会保留

不同数据类型的一个重要区别就是不同类型
    存储区包含的字节个数不同
sizeof关键字可以用来计算一个存储区包含的
    字节个数

char和unsigned char        1个字节
short和unsigned short      2个字节
int和uunsigned int         4个字节
long和unsigned long        4个字节
float                      4个字节
double                     8个字节

sizeof小括号里可以写任何能当作数字使用的内容
sizeof小括号里对任何存储区内容的修改不会
    真正生效

scanf标准函数可以把用户在键盘上输入的
   数字记录到变量的存储区里
为了使用这个标准函数需要包含stdio.h头文件
scanf函数调用语句里需要使用存储区的地址
    表示存储区
双引号里使用占位符表示存储区的类型

不要在scanf函数调用语句的双引号里写不是
    占位符的内容
可以在一条scanf函数调用语句里获得多个数字
如果用户输入的格式和程序中要求的格式不同
    就无法获得数字

一个字节可以分成八段,每段可以用来记录一个
    0或者1
要想把一个数字记录到一个字节里就必须首先
    把它拆分成8个0或者1
采用一组0或者1表示数字的方法叫二进制
任何数字既可以采用二进制方式表示也可以
    采用十进制方式表示
计算机里只能记录二进制方式表示的数字
二进制表示方式中每个数位有一个编号,
    最右边数位的编号是0,向左依次递增
二进制表示方式中某个数位里的1单独代表
   一个数字,这个数字就是2的数位编号
    次方
二进制表示方式中如果两个相邻数位的内容
   一样则左边数位代表的数字是右边数位
    代表数字的2倍
用二进制表示的非负数符合以上规则
二进制加一的时候把数位0开始的连续多个
    1都变成0,把最右边的0变成1

二进制表示的非负数转换成十进制的时候只
   需要把每个数位里的内容单独转换然后
    再求和

0000 0101 = 2的2次方 + 2的0次方
          = 4 + 1
          = 5

0010 1100 = 2的5次方 + 2的3次方 + 2的2次方
          = 32 + 8 +4
          = 44

十进制表示的非负数转换成二进制的方法
12         *******0
 6         ******0
 3         *****1
 1         ****1
 0         ****

转换结果是0000 1100

不断对原始数字进行除以2保留整数部分的操作
   得到一组数字,用其中每个数字除以2取余
   得到一个数位的内容,把所有数位的内容
    按照从后向前的顺序书写就得到转换结果

负数的二进制和十进制之间不能直接转换,需要
    借助相反数

转换过程分三歩
1.首先根据原始数字得到相反数
2.把第一步得到的相反数进行转换
3.根据第二步的转换结果再计算相反数

把二进制表示方式中每个数位的内容变成
    相反内容然后再加一就得到相反数
    的二进制

-14
14
0000 1110
1111 0001 + 1 = 1111 0010  (-14的二进制)

有符号类型数字最左边的二进制数位可以帮助
    判断数字的符号,这个数位叫做符号位
符号位是0表示数字是非负数,符号位是1表示
    数字是负数

1100 0101
0011 1010 + 1 = 0011 1011
59
-59

预习:
    1.八进制和十六进制
    2.操作符

这篇关于day03 负数二进制求法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961308

相关文章

通信工程学习:什么是2ASK/BASK二进制振幅键控

2ASK/BASK:二进制振幅键控         2ASK/BASK二进制振幅键控是一种数字调制技术,其全称是二进制振幅键控(Binary Amplitude Shift Keying)。该技术通过改变载波的振幅来传递二进制数字信息,而载波的频率和相位则保持不变。以下是关于2ASK/BASK二进制振幅键控的详细解释: 一、2ASK/BASK二进制振幅键控的基本原理 1、振幅键控:

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1:输入:a = "11", b = "1"输出:"100"示例 2:输入:a = "1010", b = "1011"输出:"10101" 算法设计 可以从低位到高位(从后向前)计算,用一个变量carry记录进位,如果有字符没处理完或者有进位,则循环处理。两个字符串对

Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/ 给出的两个二进制,我们可以从最后开始往前运算。 给当前短的一位前面补充0即可。 class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?StringBuil

二进制的匹配问题

最近做了点搜索和背包的题目,发现这个二进制的匹配很是好用,所以写一篇二进制的匹配来作为自我总结; 首先我们要知道二进制的运算符,和他们的运算规则; ABA&BA|BA^B00000010111001111110 运算符有三种‘&’ , ‘|’ ,  ‘^'  或,且,异或,运算的规则在表中可以看到,想想这个规则我们可以做很多事情! 首先,每个十进制的数都会对应一个唯一的二进

网络编程day03(网络体系结构、调试命令、TCP/IP对比)

目录 1》网络的体系结构 1> OSI模型  2> TCP/IP模型 3> 常见网络协议 4> DNS域名解析协议 2》 网络调试命令 1> ping:测试网络连通性(ICMP) 2> netstat   3》Dos (拒绝式服务)攻击?  4》 TCP/IP协议对比 1》网络的体系结构 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组

java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)

5,结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式

二进制方式安装Helm

二进制方式安装Helm 官网:https://helm.sh/ 1、下载安装包 wget -L https://get.helm.sh/helm-v3.16.0-rc.1-linux-amd64.tar.gz 2、解压 tar -xf helm-v3.16.0-rc.1-linux-amd64.tar.gz 3、移动到/usr/local/bin/目录下 mv linux-am

输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。

/*** 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。* 思路:第一步求这两个数的异或,第二步统计异或结果中1的位数*@author: Administrator*@date: 2017-1-13 下午09:39:25*/import java.util.Scanner;public class Solution4 {public int CountDifference

代码随想录算法训练营Day03 | 链表理论基础、203.移除链表元素 、707.设计链表、206.反转链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 链表理论基础203.移除链表元素思路与重点 707.设计链表思路与重点 206.反转链表思路与重点 链表理论基础 C/C++的定义链表节点方式: // 单链表struct ListNode {int val; // 节点上存储的元素ListNode *next; // 指向下一个节点的指

牛客网《剑指Offer》 二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路 负数用补码,其实就是求一个数据在计算机中是存储是怎么样子的。用位运算,就能很好实现。 class Solution {public:int NumberOf1(int n) {int count = 0;int flag = 1;while (flag != 0) {if ((n & f