首页 > 其他分享 >数制和数值运算

数制和数值运算

时间:2022-10-21 14:31:40浏览次数:58  
标签:数制 运算 00000000 补码 数值 二进制 按位 原码 字节

1进制

二进制   0b前缀    占位符

八进制   0前缀      %0

十进制                 %d

十六进制  0x前缀   %x

2基本概念

数码:每一个数据中的每一位数字

数位:数码的位置,从左到右,从0开始数

基数:就是进制

位权:数码*基数的数位次方

例 0b10100111   位权=1*2的一次方

3.进制转换

a.二,八,十六转十进制

数制和数值运算_二进制数

b.十进制转二,八,十六

连续除以基数直至商为0,从低到高记录余数

c.二进制、八进制的互相转换

方法:

二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换

成八进制

八进制转换成二进制:用3位二进制数代替每一位八进制数

d.二进制、十六进制的互相转换

方法:

二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),

转换成十六进制

十六进制转换成二进制:用4位二进制数代替每一位十六进制数


4.sizeof运算符(计算变量,常量在内存中的字节数)

int 四字节

float 四字节

double 八字节

char  一字节

使用:

sizeof(数据类型)返回占据多少字节   sizeof(int)

sizeof(变量名)  返回占据多少字节    sizeof(num)

sizeof(常量)     返回占据多少字节    sizeof(10)

注意:char类型常量占据四字节,变量占据一字节。

5.原码,补码,反码

a.原码:最高位表示符号位。

正数在前面加0,负数前面加1(0表示正数,1表示负数)

10的原码   00000000 00000000 00000000 00001010

-8的原码   10000000 00000000 00000000 000001000

b.反码

10的补码   00000000 00000000 00000000 00001010

-8的反码    11111111 11111111 11111111 11110111

c.补码

10的补码   00000000 00000000 00000000 00001010

-8的补码   11111111 11111111 11111111 11111000

总结:一个正数的原码,反码,补码都相等。

一个负数原码不变(但前面加1,且1取反时不变),反码则是原码数值取反,补码是反码的基础上再加1.

补码加减法:

[x+y]补=[x]补+[y]补

计算流程  先将x,y变成补码形式(无论正负)然后相加。

6.按位与运算

位运算指一个二进制数的每一位都参加运算(前提是一个二进制数)

注意:参与位运算的都是二进制的补码,结果也是二进制的补码形式。(结果为正数的补码和原码一致,结果为负数时,要经过变化转成原码)

a.按位与:&

参与按位与的两个二进制数,如果都为一,那么结果也是一。只要一位为0,那么结果为0.

任何数按位与1的结果是:是这个数的最低为。

偶数的最低为是0,奇数的最低位是1。如果结果为0则为偶数,为1则为奇数。

b.按位或  |

参与按位或的二进制数据只要一位为1,那么结果为1.只有两个都为0时结果才为0.

c.按位取反     ~

单目运算符  将二进制数的每一位都取反

d.按位异或  ^

参与按位异或的二进制数如果相同为0,不同为1.

e.按位左移或者右移

<<        左移:参与按位左移的二进制数,向左移动指定的位数,低位不够补0,高位溢出舍弃。

3<<2    00000000  00000000  00000000  00000011

             00000000  00000000  00000000  00001100    12

注意:可能改变其正负性,一个数左移n位,就是这个数乘以2的n次方。

 >>         右移:参与按位右移,向右相对指定的位数,低位溢出舍弃,高位补符号位。

3>>2    00000000  00000000  00000000  00000011   3

            00000000  00000000  00000000  00000000    0

注意:右移不改变正负性,一个数右移n位,就是这个数除以2的n次方。


标签:数制,运算,00000000,补码,数值,二进制,按位,原码,字节
From: https://blog.51cto.com/u_15809685/5782741

相关文章

  • 广义矩阵乘法中二元运算符的条件
    一般地,如果矩阵中的加法和乘法满足一个半环,那么矩阵乘法满足交换律。一个半群由集合\(A\)和两个定义在\(A\)上的二元运算\(\oplus\)和\(\otimes\)构成,其中:\((A......
  • 数据类型及运算
    C字符集1.大小写的英文字母:A--Z,a--z2.数字字符:0-93.专门符号(29个):!、#、%、^、&、*、_(下划线)+、=、-、~、<、>、/、\、|、‘“、  ;、    , ()   {}  ......
  • 14 逻辑运算符
    01优先次序有3种逻辑运算符:与(AND),或(OR),非(NOT)。在basic和Pascal等语言可以在程序中直接用and,or,not作为逻辑运算符。在C语言中不能再程序中直接使用,而是用其他符号代替。!(非)&&(......
  • 13 关系运算符
    01什么事关系运算符在C语言中,比较符称为关系运算符。所谓关系运算就是比较运算,将两个数值进行比较,判断其比较的结果是否符合给的的条件。02关系运算符及其优先次序C语言提......
  • 7运算符和表达式
    01基本运算符+正号运算符-负号运算符*乘法运算符/除法运算符%求余运算符+加法运算符-减法运算符读者应该特别注意+和-在不同情况下的含义02自增、自减运算符++i,--i在使用i......
  • 【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较
    前言:突然想打算把Rust作为将来自己主要的副编程语言。当然,主语言还是C#,毕竟.NET平台这么强大,写起来就是爽。缘起:之前打算一些新的产品或者新的要开发的东西,由于没有历史包......
  • 《计算机组成与设计:硬件/软件接口》第三章 计算机的算术运算笔记
    title:第三章计算机的算术运算笔记date:2022-10-18周二摘要:本文是《计算机组成与设计:硬件/软件接口》第三章的学习记录,其中辅以cs61c以及csapp的部分内容。mindm......
  • java运算符
    1.赋值运算符=,+=,-=,*=,/=,%=运算符运算范例结果=赋值a=3,b=2a=3,b=2+=加等于a=3,b=3;a+=b;a=5,b=2;-=减等于a=3,b=2,a-=b;a=1,b=2;*=乘等于a=3,b=2,a*=b;a=6,b=2/=......
  • React:条件渲染(三目运算符)
    在React中,你可以创建不同的组件来封装各种你需要的行为。然后,依据应用的不同状态,你可以只渲染对应状态下的部分内容。React中的条件渲染和JavaScript中的一样,使用Ja......
  • 取模运算优化
    取模优化常见的做法是加法取模转减法,或者积累数据之后一次性取模,不过这些没有真正的加快取模运算,只是减少了取模的运算次数。真正想要把取模做到和加减一样快(\(O(1)\))已......