Board logo

标题: [问题求助] [已解决]PowerShell脚本16进制左移计算 [打印本页]

作者: 小白龙    时间: 2023-4-2 09:51     标题: [已解决]PowerShell脚本16进制左移计算

一直对左移和右移不太懂, 今天看了下面的文章, 还是不太懂
http://code.newban.cn/163.html

文章有下面的文本, 2F0怎么能乘以或除以16? 2F0是什么?
2F0往左移一位变成2F00, 可以理解为是2F0乘以16得来的
2F0往右移一位变成2F, 可以理解为是2F0除以16得来的


请求路过高手, 计算一下, 下面的式子, 左移后的16进制值和10进制值分别是什么

0x0300<<16
作者: WHY    时间: 2023-4-2 15:56

本帖最后由 WHY 于 2023-4-2 16:01 编辑

2F0 按16进制常规写法就是 0x02F0,共两个字节(1个字节8位),02是高字节,F0是低字节。
如果不明白,把它转成2进制形式:
0000001011110000   红色=02,蓝色=F0
二进制左移1位,数据扩大一倍(2的1次方)
0000010111100000 红色=05,蓝色=E0
二进制左移4位,数据扩大16倍(2的4次方)
0010111100000000 红色=2F,蓝色=00

2进制左移4位,相当于16进制左移一位
0x0300左移16位,相当于16进制左移4位,补4个0即可:0x03000000
  1. 0x0300 -shl 16
  2. (0x300)*[Math]::Pow(2,16)
复制代码
  1. ([int32]((0x300)*[Math]::Pow(2,16))).ToString('X')
复制代码

作者: 小白龙    时间: 2023-4-2 18:22

回复 2# WHY

多谢大佬详细指导!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2